/*
 * Definições comuns ao cliente e ao servidor.
 */

#ifndef CHECKSUM_H_
#define CHECKSUM_H_

#include <stdint.h>
#include <stdbool.h>
#include "segments.h"


/**
 * Calcula o checksum do segmento para ser guardado dentro do campo de checksum.
 *
 * @param segment O segmento, com o campo checksum zerado
 * @param size O tamanho do segmento em bytes
 * @return O checksum do pacote
 */
uint32_t calc_checksum(void *segment, int size);


/**
 * Verifica se o segmento está corrompido ou não, testando seu checksum.
 *
 * @param segment O segmento, cujo campo checksum foi calculado no remetente
 * @param size O tamanho do segmento em bytes
 * @return true se o segmento não estiver corrompido, false se estiver
 */
bool verify_checksum(void *segment, int size);


#endif /* CHECKSUM_H_ */
